package com.example.baseweather.viewmodel.factory;

import android.media.MediaMetadataRetriever;
import android.os.Environment;

import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;

import com.example.baseweather.domain.MusicInfoBean;
import com.example.baseweather.viewmodel.MediaPlayerViewModel;

import java.io.File;
import java.util.ArrayList;

public class MediaPlayerViewModelFactory implements ViewModelProvider.Factory {
//    在中控大屏主屏中，点击多媒体播放器 App，进入主界面，App主界面和媒体播放界面两部分。
//            1.主界面用卡片列表展示该设备中所有的视频信息，卡片上半部
//    分展示该视频的预览图 ，下半部分显示视频名称和“上次看到 xx 分xx 秒”信息。
//            2.点击对应的视频卡片，弹出选择框，可选择【主屏、副驾屏同
//    时播放】和【仅副驾屏播放】，选择后点击确定，对应的屏幕会进入视频播放界面，
//    并播放所选择卡片对应的视频。视频播放器界面默认整屏播放视频，当点击正在播放的视频时，左上角显示【返回】按钮，
//    点击【返回】则主屏回到多媒体播放器 App 主界面。视频播放界面下方显示视频播放器工具栏，
//    工具栏上半部分显示【快进】【快退】【暂停/继续播放】、【其他视频】按钮，点击【其他视频】按钮可弹出视频列表弹层
//    ，以列表的形式展示其他视频，界面播工具栏下半部分显示视频的【当前播放时长】、【总时长】、和【视频进度条】。
//    可拖动视频进度条调整当前视频播放进度。
    private static final String filePath = Environment.getExternalStorageDirectory().getPath() +
            File.separator + "Download";
    @NonNull
    @Override
    public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
        if(modelClass.isAssignableFrom(MediaPlayerViewModel.class)){
            ArrayList<MusicInfoBean> musicInfoBeans = new ArrayList<>();
            File downLoadFiles = new File(filePath);
            for (File file : downLoadFiles.listFiles()) {
                String fileName = file.getName();
                MusicInfoBean musicInfoBean = new MusicInfoBean();
                if (fileName.endsWith(".mp3") || fileName.endsWith(".ogg") ||
                        fileName.endsWith(".wav")) {
                    musicInfoBean.setMusicName(fileName);
                }
                MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
                mediaMetadataRetriever.setDataSource(filePath + File.separator + fileName);
                String songTitle = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.
                        METADATA_KEY_TITLE);
                musicInfoBean.setTitle(songTitle);
                String authorName = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.
                        METADATA_KEY_ARTIST);
                musicInfoBean.setAuth(authorName);
                musicInfoBeans.add(musicInfoBean);
            }
            return (T) new MediaPlayerViewModel(musicInfoBeans);
        }
        throw new RuntimeException("请检查ViewModel类型");
    }
}
